#include <stdio.h>
#include <unistd.h>
#include "ohos_init.h"
#include "ohos_types.h"
#include "cmsis_os2.h"
#include "iot_gpio.h"
#include "iot_gpio_ex.h"

#define LED_W_GPIO 2

static void LEDTask(void)
{
    // 初始化 GPIO
    IoTGpioInit(LED_W_GPIO);
    // 设置 GPIO2 的复用功能为普通 GPIO
    IoTGpioSetFunc(LED_W_GPIO, IOT_GPIO_FUNC_GPIO_2_GPIO);
    // 设置 GPIO2 为输出模式
    IoTGpioSetDir(LED_W_GPIO, IOT_GPIO_DIR_OUT);
    while (1)
    {
        // 设置 GPIO2 输出高电平点亮 LED 灯
        IoTGpioSetOutputVal(LED_W_GPIO, IOT_GPIO_VALUE1);
        // 延时 1s
        sleep(1);
        // 设置 GPIO2 输出低电平熄灭 LED 灯
        IoTGpioSetOutputVal(LED_W_GPIO, IOT_GPIO_VALUE0);
        // 延时 1s
        sleep(1);
    }
}

void GPIOExample(void)
{
    osThreadAttr_t attr;
    attr.name = "LEDTask";
    attr.attr_bits = 0U;
    attr.cb_mem = NULL;
    attr.cb_size = 0U;
    attr.stack_mem = NULL;
    attr.stack_size = 512;
    attr.priority = osPriorityNormal;
    if (osThreadNew((osThreadFunc_t) LEDTask, NULL, &attr) == NULL)
    {
        printf("Failed to create LEDTask!\n");
    }
}

SYS_RUN(GPIOExample);
